//
//  LGSNodeTypeSelectorDelegate.h
//  LogicSim
//
//  Created by Jeremy Pereira on 30/04/2012.
//  Copyright (c) 2012 Jeremy Pereira. All rights reserved.
//

#import <Foundation/Foundation.h>

/*!
 *  @brief Delegate for selecting a node type from a list of types.
 */
@protocol LGSNodeTypeSelectorDelegate <NSObject>
 
/*!
 *  @brief Inform the delegate that a node type has been selected.
 *
 *  @param selector object that selected the node type.
 *  @param index The index of the node type that was selected.  
 */
-(void) nodeTypeSelector: (id) selector selectedIndex: (size_t) index;

/*!
 *  @brief Message sent if the selector operation was canceled.
 *  @param selector object that would have selected the node type.
 */
-(void) nodeTypeSelectorCanceled: (id) selector;

/*!
 *  @brief return the window to attach a sheet for selecting the node type to.
 *
 *  @param selector The selector that will display the sheet.
 *  @return The window to attach the sheet to.
 */
-(NSWindow*) windowForNodeTypeSelector: (id) selector;

/*!
 *  @brief count of items that we can select between
 *
 *  @param selector The selector that will display the sheet.
 *  @return the count of items to select between
 */
-(size_t) itemCountForNodeTypeSelector: (id) selector;

/*!
 *  @brief Return the item label for the item at the selected index.
 *
 *  @param selector The selector that will display the sheet.
 *  @param index The index of the item that will be selected.
 *  @return A string containing the label of the selected item.
 */
-(NSString*) labelForNodeTypeSelector: (id) selector 
                              atIndex: (unsigned int) index;

@end
